/*******************************************************************************
  * 文件：Hardware_Flash.h
  * 作者：djy
  * 版本：v1.0.0
  * 日期：2020-11-27
  * 说明：Flash外设
*******************************************************************************/
#ifndef _HARDWARE_FLASH_H
#define _HARDWARE_FLASH_H

/* 头文件 *********************************************************************/
#include "Typedefine.h"
#include "Constant.h"
#include "Macro.h"

/* 宏定义 *********************************************************************/
/* Flash 页信息*/
#define ES8H0183_FLASH_PAGE_SIZE                (512)       // Flash每页大小
#define ES8H0183_FLASH_PAGE_NUMS                (256)       // Flash页数
#define ES8H0183_FLASH_PAGE_MASK                (ES8H0183_FLASH_PAGE_SIZE - 1)

/* Flash 基本信息*/
#define ES8H0183_FLASH_START_ADDR               (0x00000)   // Flash起始地址
#define ES8H0183_FLASH_SIZE                     (0x20000)   // Flash总大小
#define ES8H0183_FLASH_MASK                     (ES8H0183_FLASH_SIZE - 1)

/*Flash 分区信息*********/
#define  ES8H0183_FLASH_BOOT_SIZE               (32*1024)   // Flash Boot区大小
#define  ES8H0183_FLASH_BOOT_PARA_SZIE          (1 *1024)   // Flash Boot区参数大小
#define  ES8H0183_FLASH_APP_SIZE                (92*1024)   // Flash App区大小
#define  ES8H0183_FLASH_APP_PARA_SIZE           (4 *1024)   // Flash APP参数区大小

#define  ES8H0183_FLASH_BOOT_START_ADDR         (ES8H0183_FLASH_START_ADDR)                                     // BOOT起始地址
#define  ES8H0183_FLASH_APP_START_ADDR          (ES8H0183_FLASH_BOOT_START_ADDR + ES8H0183_FLASH_BOOT_SIZE)     // APP起始地址
#define  ES8H0183_FLASH_BOOT_PARA_START_ADDR    (ES8H0183_FLASH_APP_START_ADDR - ES8H0183_FLASH_BOOT_PARA_SZIE) // BOOT区参数起始地址
#define  ES8H0183_FLASH_APP_PARA_START_ADDR     (ES8H0183_FLASH_SIZE - ES8H0183_FLASH_APP_PARA_SIZE)            // APP参数区起始地址

/* 类型定义 *******************************************************************/
/* 变量声明 *******************************************************************/
/* 函数声明 *******************************************************************/
void Hardware_FlashLock(void);	    // Flash上锁
void Hardware_FlashUnlock(void);	// Flash解锁
Bool Hardware_FlashErase(U32 u32PageAddr,U16 u16PageNums); // Flash擦除页
Bool Hardware_FlashRead(void *Data,U32 u32ReadAddr,U32 u32ReadByteLen);	    // Flash读取数据
Bool Hardware_FlashWrite(void *Data,U32 u32WriteAddr,U32 u32WriteWordLen);  // Flash写入数据

#endif	/* _HARDWARE_FLASH_H */


